import java.util.ArrayList;
import java.util.Stack;

/**
 * 二叉树 前序遍历。
 * 通过栈实现。
 */
public class TreeNodeDemo2 {
    public static void main(String[] args) {
        TreeNode head=new  TreeNode(1);
        TreeNode headRight=new TreeNode(2);
        TreeNode node3=new TreeNode(3);
        head.right=headRight;
        headRight.left=node3;
        // 这个二叉树 的结构在题里面是：{1，#，2,3}  #或者null。
        ArrayList<Integer> vars=new ArrayList<>();
        getAllNode(head,vars);
        System.out.println(vars);
    }
    private static void getAllNode(TreeNode head, ArrayList<Integer> vars) {
        Stack<TreeNode> nodes=new Stack<>();
        nodes.push(head);
        while (!nodes.isEmpty()){
            TreeNode node= nodes.pop();
            vars.add(node.val);
            if (node.right!=null){
                nodes.push(node.right);
            }
            if (node.left!=null){
                nodes.push(node.left);
            }
        }
    }
}
